home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
051-060
/
amok53
/
oberon2.0
/
liesmich
/
liesmich
Wrap
Text File
|
1993-11-04
|
22KB
|
599 lines
20. April 1991
Amiga Oberon 2.00 (eingeschränkte Version)
Vorwort:
Vor Ihnen liegt eine frei kopierbare Demo-Version eines leistungsfähigen
Compilers für eine der modernsten objektorientierten Sprachen. Oberon ist
die neuste Entwicklung von Prof. Dr. Niklaus Wirth an der ETH Zürich. Diese
Sprache entstand dort innerhalb eines Projekts, das sich das Ziel setzte,
die Leistungsfähigkeit der Sprache Modula-II zu vergrößern und gleichzeitig
ihre Komplexität zu verringern. Dazu wurde Oberon um das Konzept der
Typerweiterung ergänzt, wodurch objektorientiertes Programmieren ähnlich
wie in Smalltalk oder C++ möglich wird, während jedoch die gewohnte
Notation aus Modula-II und Pascal größtenteils beibehalten wird.
Dieser Compiler hat einige herausragende Fähigkeiten, die von anderen
Compilern kaum erreicht werden:
- Der Compiler ist durch das Single-Pass Konzept sehr schnell. Dennoch
erzeugt er durch eine sorgfältige Auswahl an Optimierungen kurzen und
schnellen Code.
- Beim Aufruf von Prozeduren werden automatisch Register-Variablen und
-Parameter verwendet
- Die Objektdateien sind ALink- bzw. BLink- kompatibel. Dadurch sind sie
sehr flexibel einsetzbar und die Einbindung von Routinen aus anderen
Sprachen, wie Assembler und C, wird leicht möglich.
- Oberonprogramme werden optimierend gelinkt. Es kommen also keine
Prozeduren, die niemals aufgerufen werden, in das ausführbare Programm,
so daß dieses meist recht kurz wird. Ein 'leeres' Oberonprogramm ist
zum Beispiel weniger als ein halbes Kilobyte lang.
- Programme, die mit diesem Compiler entwickelt wurden, sind sehr sicher
im Laufzeitverhalten, da der Compiler massiv Überprüfungscode einsetzt,
um möglichst alle Fehler abzufangen. Fehler führen in den meisten
Fällen nicht zur Guru-Meditation, sondern werden durch das
Laufzeitsystem abgefangen.
- Um problemlos auf das Amiga-Betriebssystem und alle Resourcen zugreifen
zu können, wurde die Sprache um Amiga-spezifische Typen ergänzt. Die
objektorientierte Struktur des AmigaOS wird auch in Oberon deutlich
und leicht nutzbar.
- Es stehen viele Bibliotheksmodulen zur Verfügung und es werden ständig
neue Module geschrieben, die dann als Zusatzpakete erhältlich sein
werden, oder auf Public Domain Disktten erscheinen. Die AMOK-Serie
bietet schon eine Reihe an Modulen, so z.B. Routinen zum Laden und
Speichern von IFF-Grafiken
- Alle Oberonprogramme können resident geladen werden.
- Dieser Compiler erzeugt voll reentrante (pure) Programme durch das
Setzen einer einzigen Compileroption. Die einzige Einschränkung dabei
ist, das der Bereich der globalen Variablen kleiner als 32K sein muß.
- Der Compiler erzeugt wahlweise für die Prozessoren 68010, 68020,
68030 und die FPU 68881/68882 optimierten Code. Die FPU kann voll
ausgenutzt werden, es werden z.B. auch direkt die trigonometrischen
Befehle ausgenutzt.
- Durch Bedingte Compilation können verschiedene Versionen eines Programms
(z.B. eine englisch- und eine deutschsprachige Version) im gleichen
Quelltext enthalten sein.
- Die Symboldateien können Speicherresident gehalten werden. Dadurch wird
die Zahl der Zugriffe auf die Harddisk bzw. Diskette minimiert und
hervorragende Compilier-zeiten können erreicht werden.
- Zu Amiga Oberon ist ein leistungsfähiger Runtime-Source-Level-Debugger
erhältlich. Während das debuggte Programm läuft hat man Debugger aus
volle Kontrolle über das Programm. Es können u.A. die Variableninhalte
betrachtet und verändert werden, das Programm kann bis zum Erreichen
eines sog. BreakPoints oder bis zum Eintreffen einer beliebigen
Bedingung 'rennen', beliebige Ausdrücke können mit Hilfe eines
Ausdruck-Interpreters berechnet werden,...
Dieser Oberon-System ist also ein ideales Werkzeug, um effektiv kleine und
große Programme zu entwickeln. Durch die objektorientierten Eigenschaften
kann eine einmal aufgebaute Modulbibliothek leicht für neue Projekte
verwendet und die früher definierten Objekte können leicht an die neuen
Aufgaben angepasst werden.
Einschränkungen der Demo-Version:
Diese Version des Compilers soll Sie in die Lage versetzen, ein paar kleine
Programme in Oberon zu schreiben und etwas in den Compiler und seine
Fähigkeiten hineinuzuschnuppern. Ich muß jedoch auch von etwas Leben und
kann den Compiler daher nicht voll der Öffentlichkeit zur Verfügung stellen.
Daher wurden in dieser Version ein paar Einschränkungen eingebaut, die ein
sinnvolles Arbeiten über längere Zeit unmöglich machen sollen und Sie damit
zwingen, sich die vollständige Version zu kaufen. Die Einschränkungen im
einzelnen:
- Es wird nur ein kleiner Teil der Modulbibliothek und der Amiga
Interface-Module mitgeliefert
- Die Anleitung ist knapp und wenigsagend gehalten und zudem nicht
gedruckt.
- Der Compiler läuft Montags nicht
- Der Quelltext je Modul darf höchstens 10K lang sein
- Der erzeugte Programmcode je Modul darf höchstens 5K lang werden
- Der Bereich der globalen Variablen je Modul ist auf 3K beschränkt
- Der Bereich der Stringkonstanten je Modul ist auf 1K beschränkt
- Ein Modul kann maximal 6 andere Module importieren
- Der Editor kann höchsten 200 Zeilen Text bearbeiten
- Das Paket enthält nur die Objektdateien für das kleine Datenmodell, so
daß das große nicht verwendet werden kann.
- Der Debugger kann nur Programme mit maximal 50 Anweisungen bearbeiten.
- Im Debugger können maximal 25 Aktionen ausgeführt werden, danach bricht
er ab.
Es ist sicher für Hacker kein Problem, diese Einschränkungen
herauszupatchen. Jede Änderung an den Programmen, Texten und sonstigen
mitgelieferten Datein ist jedoch untersagt, sowie der Besitz, die
Verwendung oder Verbreitung von veränderten Versionen der Programme und
Dateien. Es ist sicher einfacher, sich eine Raubkopie des Compilers zu
besorgen, als die Einschränkungen herauszupatchen. Strafbar macht man sich
dabei gleichermaßen.
Die Diskette enthält folgende Dateien:
LiesMich
: Diese Datei
Oberon-Bericht
: Der Oberon-Report (deutsch), direkt von der ETH Zürich
ModulaToOberon
: Der Text "From Modula To Oberon" (englisch), auch von
der ETH.
Install
: Script-File zur einfachen Installation des Compilers
Oberon
: Der Compiler
OLink
: Utility zum Linken von Oberon-Programen, ohne alle
Modulnamen in BLink eintippen zu müssen.
OEd
: Der Editor zum Compiler
OErr
: Sind während der Compilation eines Programms Fehler auf-
getreten, können sie mit diesem Programm angesehen werden.
ExeIcon
: IconX-Ähnliches Programm
BLink
: Der Linker
BLink.doc
: Englische Dokumentation zum Linker
Path:
Pfaddatei für Compiler und OLink
Fehler-Meldungen:
Die Fehlermeldungen. Wird von OEd und OErr beim Anzeigen
von Fehlern gebraucht.
ResidentManager:
Dieses Tool bewirkt, das die Symboldateien speicher-
resident gehalten werden. Dadurch werden sehr viel
weniger Zugriffe auf die Harddisk bzw. Diskette nötig,
was die Compilierzeiten stark verkürzt.
ResidentModules:
Text-Datei, die die Namen der Module enthält, deren
Symboldateien resident gehalten werden sollen. 'all'
bewirkt, daß alle Symboldateien resident sind.
ODebug.LiesMich:
Anleitung zum Debugger
ODebug:
Der Debugger selbst
Demos (dir)
: Demoprogramme:
Tetriz
: Kleines Workbench-Spiel
Sparks
: Kleines Grafik-Demo
Icons (dir)
: Dieses Directory enthält die Icons der Oberondateien.
Diese werden vom Compiler, Linker etc. bei bedarf
kopiert.
libs (dir)
: Zusätzlich benötigte Libraries:
oberonsymbols.library (lädt Symboldateien)
arp.library (für File-Requester)
sym, obj (dir)
: Symbol- und Objektdateien der mitgelieferten Module.
Module (dir)
: Enthält Pseudo-Definitionsdateinen einiger mitgelie-
ferter Module
Alle Programm dieser Diskette, mit der Ausnahme von BLink, wurden in
Oberon geschrieben und mit diesem Compiler entwickelt.
Die Programme sind aus Platzgründen mit dem PowerPacker gepackt und daher
nicht residentfähig. Sie können, nachdem sie entpackt wurden, auch resident
geladen werden.
Verwendete Dateinamen:
Die OBERON-Dateien haben folgende Endungen:
Module / Programme: '.mod'
Symboldatei: '.sym'
Objektdatei: '.obj'
Objektdatei, bei kleinem Datenmodell: '.objs'
Linkdatei (ruft BLink auf): '.lnk'
Withdatei für BLink: '.wth'
Referenzdatei für ODebug: '.ref'
Executeable: ''
Installation des Compilers:
Der Compiler kann einfach durch Doppelklicken des 'Install'-Icons
installiert werden. Dabei wird die arp.library (von OEd benötigt) in das
LIBS:-Verzeichnis kopiert und das logische Device OBERON: auf die
Oberon-Diskette gesetzt.
Wer vom CLI arbeitet, sollte zudem noch "PATH OBERON: ADD" eingeben.
Der Editor OEd:
Dieser Editor unterstützt besonders die Entwicklung von Oberonprogrammen.
Er kann leicht mit der Maus bedient werden, erlaubt das gleichzeitige
Bearbeiten mehrere Texte, enthält einen Oberon-Syntaxchecker, erlaubt das
Starten von Compiler, Linker und compiliertem Programm und kann die
Fehlermeldungen des Compilers anzeigen.
Starten von OEd:
Aufruf:
OEd {-{i|t#|x#|y#|w#|h#|d#|s|l}} {<Text>}
Gestartet wird OEd einfach durch Doppelklick auf sein Icon oder durch
Eingabe von "OEd" im CLI. Werden Argumente übergeben, oder wurden von der
Workbench zuvor Texte angeklickt und OEd mit gedrückter Shift-Taste
doppelgeklickt, dann werden die angewählten Texte automatisch in jeweils
ein Fenster geladen. Beim WB-Start können die Optionen mit Hilfe von
Tool-Types eingestellt werden (Icon anklicken und Info im Menü wählen).
Beim Start vom CLI können noch weiter Optionen angegeben werden. '-i'
erzwingt, das Icons erzeugt werden. '-t#' setzt die Tabulatorweite auf '#'.
'-x#', '-y#', '-w#' und '-h#' legen die Größe des OEd-Fensters fest. Ist '-s'
gesetzt, öffnet OEd einen eigenen Screen. '-d#' setzt die Tiefe dieses
Screens und '-l' sorgt dafür, das ein Interlace-Screen geöffnet wird.
Die Titelzeile des Textfenster dient als Statuszeile. Sie zeigt wichtige
Informationen, wie Fehlermeldungen, Cursorposition, Textlänge und den
Dateinamen an.
Die Tastenbelegung:
Cursortasten (die Tasten mit den Pfeilen):
Wie Sie sich vielliecht schon gedacht haben, kann man mit diesen Tasten
den Cursor im Text bewegen.
mit Alt: wort / seitenweises Springen
mit Shift: An Text- bzw. Zeilen-Anfang bzw. -Ende.
Backspace (die Taste rechts oben mit dem Pfeil nach links):
löscht Zeichen links vom Cursor.
Del:
löscht Zeichen unter Cursor. Mit Shift: löscht Zeile. Mit
Control: löscht alles rechts vom Cursor.
Return:
Neue Zeile unterhalb Cursor einfügen.
TAB:
Springt zur nächsten, mit Shift zur vorigen, Tabulatormarke.
Control+'S':
Zerteilt (splittet) Zeile an Cursorposition in 2 Zeilen.
Control+'J':
Vereinigt (joint) 2 Zeilen.
Die Maus:
Linke Taste Kurz drücken: Cursor setzten.
Linke Taste länger drücken und Maus bewegen: Block markieren.
Die Menüs:
Das Projekt Menu:
Load (Amiga + 'L'): Text Laden
New Window (Amiga + 'W'): Neues Textfenster öffnen
Save (Amiga + 'S'): Text unter altem Namen speichern
Save As (Amiga + 'V'): Text unter neuem Namen speichern
Save block (Amiga + 'O'): Block speichern
Insert File (Amiga + 'I'): Textdatei einfügen
Quit (Amiga + 'Q'): Editor verlassen
About (Amiga + 'J'): Infos zum Editor ausgeben
Das Search Menu:
Find (Amiga + 'F'): String einlesen und danach suchen
Next (Amiga + 'N'): Zum nächsten Vorkommen des Suchstrings
Previous (Amiga + 'P'): Zum vorigen Vorkommen des Suchstrings
FindRep (Amiga + 'G'): 2 Strings einlesen: Danach 1. durch 2.
String ersetzen
NextRep (Amiga + 'R'): Nächstes Vorkommen von String 1 durch
String 2 ersetzen
PrevRep (Amiga + 'H'): Voriges Vorkommen von String 1 druch String
2 ersetzen
Das Block Menu:
Begin (Amiga + 'B'): Block-Anfang-Marke setzen
End (Amiga + 'E'): Block-Ende-Marke setzen
Copy (Amiag + 'Y'): Block kopieren
Move (Amiga + 'M'): Block verschieben
Delete (Amiga + 'D'): Block löschen
TAB right (Ctrl + 'R'): Block um TAB nach rechts
TAB left (Ctrl + 'L'): Block um TAB nach links
Unmark (Amiga + 'U'): Blockmarkierung löschen
Das Oberon Menu:
Parse (Amiga + 'A'): Oberonsyntax überprüfen. Evt. zur
fehlerhaften Stelle springen. Mit Parse
können Syntaxfehler schnell gefunden
werden, bevor ein Text compiliert wird.
Compile (Amiga + 'C'): Compiliert den Text. Dieser muß zuvor
abgespeichert werden.
Link (Amiga + 'K'): Linkt den compilierten Text mit OLink
Execute (Amiga + 'X'): Führt das gelinkte Programm aus.
Next Error (Amiga + 'T'): Traten bei Compilation Fehler auf, springt
'Next Error' zum nächsten Fehler hinter der
Cursorposition. Fehler wird in Statuszeile
angezeigt.
First Error (Amiga + 'Z'): Springt zum ersten Fehler
Der Compiler Oberon:
Start des Compilers:
Aufruf aus dem Editor:
Im Editor kann der Compiler einfach durch Anwahl des Menüpunktes
'Compile' gestartet werden.
Aufruf vom CLI:
Wer mit dem CLI arbeitet, sollte das aktive Verzeichnis mit dem
CLI-Befehl 'CD' zunächst auf das Verzeichnis setzen, das die Quelltexte
oder das 'txt'-Unterverzeichnis enthält.
Der Compiler benötigt normalerweise mehr als 4 KByte Stapelspeicher. Der
Stapel sollte daher mit dem CLI-Commando 'stack' auf 10000 bis 20000
Bytes gesetzt werden.
Nun kann der Compiler mit folgender Syntax gestartet werden:
Oberon { [-dmsvbcrnti] <Quelltext> }
<Quelltext> ist der Text, der compiliert werden soll. Dabei kann die
Endung '.mod' weggelassen werden. Befindet sich der Quelltext in dem
Unterverzeichnis mit dem Namen 'txt', wird er automatisch von dort
geholt.
Die Optionen ('[-dmsvbcrnti]') beziehen sich auf alle Quelltexte, die
rechts von ihnen stehen. Sie haben folgende Wirkung:
Option Wirkung
'-d' Kleines Daten-Modell, erzeugt reentrante (pure) Programme
maximal 32K globale Variablen
'-m' Kleines Code-Modell, maximal 32K Code.
'-s' Stackkontrolle ausschalten
'-v' Überlaufskontrolle ausschalten
'-b' Bereichskontrolle ausschalten
'-c' Caseindex-kontrolle ausschalten
'-r' Returnkontrolle ausschalten
'-n' Nil-Zeiger-Kontrolle ausschalten
'-t' Typkontrolle ausschalten
'-i' Icons erzeugen
'-1' Code für 68010 erzeugen
'-2' Code für 68020 erzeugen
'-3' Code für 68030 erzeugen
'-8' Code für 68881/68882 erzeugen
'-g' Referenzdatei und Code für Debugger erzeugen
'-y' Keine neue Symboldatei erzeugen
SET <option> Option <option> auf TRUE setzen
CLEAR <option> Option <option> auf FALSE setzen
Wurde der Compiler ohne Parameter gestartet, gibt er den Prompt 'in>' aus
und wartet auf die Eingabe des Quelltextnamens. Verlassen wird der
Compiler dann einfach durch Drücken von <Return>.
Aufruf von der Workbench:
Wird der Compiler von der Workbench gestartet, müssen die Quelltext bei
gedrückter Shift-Taste angeklickt und danach der Compiler doppelgeklickt
werden.
Von der Workbench sollte der Compiler nicht ohne Parameter aufgerufen
werden, da er dann die Objekt- und Symboldatein nicht in das Verzeichnis
schreibt, in dem sich die Quelltexte befinden, sondern in das
Verzeichnis, in dem sich der Compiler selbst befindet. Dies ist meist
nicht erwünscht.
0
OLink:
OLink vereinfacht den Aufruf von BLink. Wer mit der Workbench arbeitet
kann OLink starten, indem er einfach das Icon der vom Compiler erzeugten
Objektdatei doppelklickt.
Vom CLI ist der Aufruf folgendermaßen:
OLink [-bsmdi] <Objektdatei>
Objektdatei ist die vom Compiler erzeugte Objektdatei des Hauptmoduls.
Die Optionen haben folgende Funktion:
-b BLink nicht starten
-s BLINK mit Optionen SMALLCODE und SMALLDATA aufrufen.
-m sollte gesetzt werden, wenn mit kleinem Code-Modell compiliert wurde
-d muß gesetzt werden, wenn mit kleinem Daten-Modell compiliert wurde
-i Icons erzeugen
OErr:
OErr zeigt die Fehler an, beim Compilieren aufgetreten sind.
Aufruf: OErr {Quelltext}.
Abweichungen vom OBERON-Report:
- Speicher wird wie in Pascal mit NEW() und DISPOSE() verwaltet und nicht
mit Garbagecollections. Ich denke, daß eine Implementierung des
Garbage-Collection System auf dem Amiga kaum möglich und wenig sinnvoll
ist.
- Die Typeguards werden während der Compilationszeit und nicht, wie auf
der CERES (Oberon-Rechner der ETH Zürich) Maschine, während des Ladens
eines Programms festgelegt.
Copyright:
Diese Diskette darf frei kopiert werden. Sie darf unverändert
weitergegeben werden, solange dafür keine Gebühren verlangt werden.
Es dürfen keine Änderungen an den Programmen und den Dateien dieser
Diskette vorgenommen werden. Veränderte Versionen dieser Programme dürfen
weder verwendet noch weiter verbreitet werden.
Die Programme dürfen nur zusammen mit der gesamten Diskette weitergegeben
werden. So ist es z.B. untersagt, den Editor herunterzunehmen und allein
weiterzugeben, obwohl der Editor auch ohne den Compiler funktionsfähig
ist.
Die Texte von Niklaus Wirth dürfen auch allein verbreitet und z.B. in
Mailboxen hochgeladen werden. Dabei dürfen sie jedoch nicht verändert
werden und es sollte sichergestellt werden, daß sie nicht verändert
werden (durch eine entsprechende Notiz).
BLink und BLink.doc stammen von der Software Distillery. Sie dürfen auch
ohne diese Diskette, jedoch nur zusammen und unverändert, vertrieben
werden.
Alle anderen Dateien sind © 1989/1990 by Fridtjof Siebert
Nobileweg 67
D-7000 Stuttgart 40.
Deutschland
Unrechtmäßige Verwendungen der Dateien werde ich strafrechtlich verfolgen
lassen.
Für Hinweise auf Fehler in meinen Programmen bin ich jederzeit dankbar.
Ich kann nicht garantieren, daß ich genügend Zeit finde, mich mit allen
Zuschriften zu befassen. Daher bitte ich darum, Anfragen an die A+L AG zu
richten, und mich nicht unnötig vom Programmieren abzuhalten. Ich nehme
keine telofonischen Anfragen entgegen.
Der Autor übernimmt keinerlei juristische Verantwortung oder Haftung
jeglicher Art für die Korrektheit und Tauglichkeit der Programme und
Dateien. Für Schäden, die auf die Verwendung der Programme oder Dateien
zurückzuführen sind, kann der Autor nicht haftbar gemacht werden.
Voll funktionsfähige Compilerversion:
Der voll funktionsfähige Compiler und Debugger kann bei der
A+L AG
Im Däderiz 61
CH-2540 Grenchen
bestellt werden. Diese Version wird mit einer ausführlichen gedruckten
Dokumentation, weiteren Hilfsprogrammen, vielen Bibliotheksmodulen und
einem kompletten Interface zu den Amiga Betriebssystemroutinen Version
2.0 ausgeliefert.
Umfang der Vollversion:
Der Amiga Oberon Compiler wird auf insgesamt 3 Disketten ausgeliefert. Die
Disketten enthalten:
- Compiler
- Editor
- Link-Utility
- Fehler-Lister
- Make-Utility
- ModToDef (erzeugt automatisch Definitionsdateien)
- ResidentManager (für residente Symboldateien)
- Library-Linker (zum Schreiben von Amiga-Libraries in Oberon)
- Symbol- und Objektdateien der Amiga-Interface und der Bibliotheksmodule
- Quelltexte aller Amiga-Interfacemodule
- Quelltexte aller Bibliotheksmodule
Das Debugger-Paket enthält folgendes:
- Den Debugger selbst
- Ein Disassemlber für Objektdateien und ausführbare Programme
- Ein Cross-Reference-Lister für Oberon
- Den Editor, den Compiler, den Linker, den FehlerLister, das Tool
ModToDef, das Make, den Debugger, den Disassemlber und den Cross-
Reference-Lister in einer für die Prozessoren 68020 bzw. 68030 und
die FPU 68881 bzw. 68882 optimierten Version.
Mit dem Debugger werden zusätzliche Kapitel für das Handbuch geliefert,
die die Programme des Debug-Pakets beschreiben.
--- Fridtjof